package BitwiseOperation.Easy;

public class LC0163 {
    /**
     * 使用按位异或。按位异或具有以下性质：
     * 1. 任何数字和0按位异或，得到这个数字本身；
     * 2. 任何数字和自己按位异或，得到0；
     * 3. 服从交换律和结合律：a⊕b⊕a=b⊕a⊕a=b⊕(a⊕a)=b⊕0=b。
     */
    public int singleNumber(int[] nums) {
        int temp = 0;
        for (int num : nums) temp = temp ^ num;
        return temp;
    }
}
